/*
 * @Author       : your name
 * @Date         : 2021-01-04 00:09:54
 * @LastEditTime : 2021-01-04 00:16:23
 * @LastEditors  : Please set LastEditors
 * @Description  : In User Settings Edit
 * @FilePath     : /大前端学习/lagoufed-e-task/part1/fed-e-task-01-01/code/support.js
 */
class Container {
  static of (value) {
    return new Container(value)
  }
  constructor (value) {
    this._value = value
  }
  map (fn) {
    return Container.of(fn(this._value))
  }
}
// MayBe 函子
class Maybe {
  static of (value) {
    return new Maybe(value)
  }

  constructor (value) {
    this._value = value
  }

  map (fn) {
    return this.isNothing() ? Maybe.of(null) : Maybe.of(fn(this._value))
  }

  isNothing () {
    return this._value === null || this._value === undefined
  }
}
module.exports = { Maybe, Container }